import Vue from "vue";

// true 通过  , false 不通过
function Validator() {
  // 是否为空
  this.$notEmpty = (value) => {
    switch (typeof value) {
      case "undefined":
        return false;
      case "string":
        if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, "").length == 0)
          return false;
    }
    return true;
  };

  this.$isEmail = (value) => {
    var reg =
      /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
    if (reg.test(value)) return true;
    return false;
  };

  // 校验是否是手机号
  this.$isPhone = (value) => {
    if (/^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(value)) return true;
    return false;
  };

  // 长度是否符合 len [最小值,最大值]
  this.$isLenght = (value, len) => {
    if (!len || !len[0] || !len[1]) throw new Error("isLenght方法参数错误");

    str = value + "";
    if (str.length >= len[0] && str.length <= len[1]) return true;
    return false;
  };
  // value 值是否存在于inData
  this.$isIn = (value, inData = []) => {
    if (!Array.isArray(inData)) throw new Error("isIn方法参数为数组");
    return Promise.resolve(inData.some((i) => i == value));
  };
  // 校验时间是否大于当前时间 时间格式 : (2023-3-14 21:31:59)
  this.$isBigCurrentDate = (value, time = 0) => {
    var obj_value = value.replace(/-/g, "/");
    var date1 = new Date(Date.parse(obj_value));
    var date2 = new Date(new Date().getTime() + time);
    if (date1 > date2) {
      return true;
    }
    return false;
  };

  // 只能是整数类型
  this.$isInt = (value, time = 0) => {
    var obj_value = value.replace(/-/g, "/");
    var date1 = new Date(Date.parse(obj_value));
    var date2 = new Date(new Date().getTime() + time);
    if (date1 > date2) {
      return true;
    }
    return false;
  };
  // 是否是整数或 小数
  this.$isIntOrDecimal = (validateResult) => {
    // return /^[0-9]+([.]{1}[0-9]+){0,1}$/.test(validateResult);
    return Promise.resolve(
      /(^0\.[0-9]*$)|(^[1-9][0-9]*\.[0-9]*$)/.test(validateResult)
    );
  };

  // 只能是英文字符或数字

  this.$checkZmOrNum = (value) => {
    var reg = /^[0-9a-zA-Z]*$/;
    if (value != "" && reg.test(value)) {
      return true;
    }
    return false;
  };
}

let validator = new Validator();
for (let key in validator) {
  Vue.prototype[key] = validator[key];
}
